home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esdXSD.xsl < prev    next >
Encoding:
Extensible Markup Language  |  2000-07-03  |  41.7 KB  |  1,230 lines  |  [TEXT/ttxt]

  1. <?xml version="1.0"?>
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0" version="1.0"
  3.     xmlns="http://www.w3.org/TR/REC-html40" 
  4.     xmlns:s = "http://www.w3.org/1999/XMLSchema"
  5.     xmlns:local="#local-functions">
  6.  
  7.       <xsl:param name="imageDir" select="'sdimages'"/>
  8.       <xsl:param name="schemaName" select="' '"/>
  9.     <xsl:output method="html" indent="no"/>
  10.     <xsl:strip-space elements="*"/>
  11.     <xsl:template match="/">
  12.         <html>
  13.             <head>
  14.                 <title>SchemaDOC - <xsl:value-of select="$schemaName"/> </title>
  15.  
  16.                 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
  17.  
  18.                 <style type="text/css">
  19.                     <!-- container for expanding/collapsing content -->
  20.                     .c  {cursor:hand}
  21.  
  22.                     <!-- button - contains +/-/nbsp -->
  23.                     .b  {color:red; font-family:'Courier New'; font-weight:bold; text-decoration:none}
  24.                     
  25.                     <!-- element container -->
  26.                     .e  {margin-left:1em; text-indent:-1em; margin-right:1em}
  27.  
  28.                     <!-- comment or cdata -->
  29.                     .k  {margin-left:1em; text-indent:-1em; margin-right:1em}
  30.  
  31.                     <!-- tag -->
  32.                     .t  {color:#000066}
  33.  
  34.                     <!-- element +eleemnt-->
  35.                     .et  {color:#0000FF}
  36.  
  37.                     <!-- xdr default element attributes-->
  38.                     .xdra  {color:#006600}
  39.  
  40.                     <!-- tag in xsl namespace -->
  41.                     .xt {color:#990099}
  42.  
  43.                     <!-- attribute in xml or xmlns namespace -->
  44.                     .ns {color:red}
  45.  
  46.                     <!-- markup characters -->
  47.                     .m  {color:blue}
  48.  
  49.                     <!-- text node -->
  50.                     .tx {font-weight:bold}
  51.  
  52.                     <!-- multi-line (block) cdata -->
  53.                     .db {text-indent:0px; margin-left:1em; margin-top:0px; margin-bottom:0px;   padding-left:.3em; border-left:1px solid #CCCCCC; font:small Courier}
  54.  
  55.                     <!-- single-line (inline) cdata -->
  56.                     .di {font:small Courier}
  57.  
  58.                     <!-- DOCTYPE declaration -->
  59.                     .d  {color:blue}
  60.  
  61.                     <!-- pi -->
  62.                     .pi {color:blue}
  63.  
  64.                     <!-- multi-line (block) comment -->
  65.                     .cb {text-indent:0px; margin-left:1em; margin-top:0px; margin-bottom:0px;              padding-left:.3em; font:small Courier; color:#888888}
  66.  
  67.                     <!-- single-line (inline) comment -->
  68.                     .ci {font:small Courier; color:#888888}         PRE {margin:0px; display:inline}   h1 {  font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 18pt; color: #000000}          .heading { text-align:right;}         .content { vertical-align: baseline; }         .note { color:gray;}
  69.  
  70. .names   {font-family:' Arial, Helvetica'; font-weight:bold; font-size:12 }
  71. .source  {font-family:'Courier New'; font-size:12 }
  72. .values  {font-family:'Verdana, Arial, Helvetica'; font-size:12 }
  73. .headers {font-family:'Verdana, Arial, Helvetica'; font-weight:bold; font-size:12 }
  74. .descriptions {font-family:'Courier New'; color:redfont-size:12 }
  75.  
  76.  
  77.                 </style>
  78.                 <SCRIPT type="text/javascript">
  79.                     <xsl:comment>
  80. <![CDATA[
  81.         // Detect and switch the display of CDATA and comments from an inline view
  82.         //  to a block view if the comment or CDATA is multi-line.
  83.         function f(e)
  84.         {
  85.           // if this element is an inline comment, and contains more than a single
  86.           //  line, turn it into a block comment.
  87.           if (e.className == "ci") {
  88.             if (e.children(0).innerText.indexOf("\n") > 0)
  89.               fix(e, "cb");
  90.           }
  91.           
  92.           // if this element is an inline cdata, and contains more than a single
  93.           //  line, turn it into a block cdata.
  94.           if (e.className == "di") {
  95.             if (e.children(0).innerText.indexOf("\n") > 0)
  96.               fix(e, "db");
  97.           }
  98.           
  99.           // remove the id since we only used it for cleanup
  100.           e.id = "";
  101.         }
  102.         
  103.         // Fix up the element as a "block" display and enable expand/collapse on it
  104.         function fix(e, cl)
  105.         {
  106.           // change the class name and display value
  107.           e.className = cl;
  108.           e.style.display = "block";
  109.           
  110.           // mark the comment or cdata display as a expandable container
  111.           j = e.parentElement.children(0);
  112.           j.className = "c";
  113.  
  114.           // find the +/- symbol and make it visible - the dummy link enables tabbing
  115.           k = j.children(0);
  116.           k.style.visibility = "visible";
  117.           k.href = "#";
  118.         }
  119.  
  120.         // Change the +/- symbol and hide the children.  This function works on "element"
  121.         //  displays
  122.         function ch(e)
  123.         {
  124.           // find the +/- symbol
  125.           mark = e.children(0).children(0);
  126.           
  127.           // if it is already collapsed, expand it by showing the children
  128.           if (mark.innerText == "+")
  129.           {
  130.             mark.innerText = "-";
  131.             for (var i = 1; i < e.children.length; i++)
  132.               e.children(i).style.display = "block";
  133.           }
  134.           
  135.           // if it is expanded, collapse it by hiding the children
  136.           else if (mark.innerText == "-")
  137.           {
  138.             mark.innerText = "+";
  139.             for (var i = 1; i < e.children.length; i++)
  140.               e.children(i).style.display="none";
  141.           }
  142.         }
  143.         
  144.         // Change the +/- symbol and hide the children.  This function work on "comment"
  145.         //  and "cdata" displays
  146.         function ch2(e)
  147.         {
  148.           // find the +/- symbol, and the "PRE" element that contains the content
  149.           mark = e.children(0).children(0);
  150.           contents = e.children(1);
  151.           
  152.           // if it is already collapsed, expand it by showing the children
  153.           if (mark.innerText == "+")
  154.           {
  155.             mark.innerText = "-";
  156.             // restore the correct "block"/"inline" display type to the PRE
  157.             if (contents.className == "db" || contents.className == "cb")
  158.               contents.style.display = "block";
  159.             else contents.style.display = "inline";
  160.           }
  161.           
  162.           // if it is expanded, collapse it by hiding the children
  163.           else if (mark.innerText == "-")
  164.           {
  165.             mark.innerText = "+";
  166.             contents.style.display = "none";
  167.           }
  168.         }
  169.         
  170.         // Handle a mouse click
  171.         function cl()
  172.         {
  173.           e = window.event.srcElement;
  174.           
  175.           // make sure we are handling clicks upon expandable container elements
  176.           if (e.className != "c")
  177.           {
  178.             e = e.parentElement;
  179.             if (e.className != "c")
  180.             {
  181.               return;
  182.             }
  183.           }
  184.           e = e.parentElement;
  185.           
  186.           // call the correct funtion to change the collapse/expand state and display
  187.           if (e.className == "e")
  188.             ch(e);
  189.           if (e.className == "k")
  190.             ch2(e);
  191.         }
  192.         
  193.         // Erase bogus link info from the status window
  194.         function h()
  195.         {
  196.           window.status=" ";
  197.         }
  198.  
  199.         // Set the onclick handler
  200.         document.onclick = cl;
  201.         
  202.       ]]>
  203.                         //
  204.                     </xsl:comment>
  205.                 </SCRIPT>
  206.     
  207. </head>
  208.             <body bgcolor="#FFFFFF" marginheight="0" marginwidth="0" topmargin="0" leftmargin="0">
  209.                 <xsl:apply-templates/>
  210.                 <center>
  211.                 <table border="0" WIDTH="90%" BGCOLOR="#eeeeee" >
  212.                 <tr>
  213.                      <td> 
  214.                 <xsl:apply-templates mode="copy"/>
  215.                     </td>
  216.                    </tr>
  217.                  </table>
  218.                 </center>
  219.                 
  220.             </body>
  221.         </html>
  222.     </xsl:template>
  223. <xsl:template match="s:schema">
  224.         <table width="90%" border="0" cellspacing="4" cellpadding="2" align="center">
  225.             <tr  >
  226.                     <td bgcolor="#003366"  colspan="2" >
  227.                         <font face="Arial,Helvetica" size="5" color="#FFFFFF">
  228.                      
  229.                         XML Schema - <xsl:value-of select="$schemaName"/>
  230.         <!--                <xsl:if test="@targetNamespace">
  231.                             :
  232.                             <xsl:value-of select="@targetNamespace"/>
  233.                         </xsl:if> -->
  234.                     
  235.                     </font>
  236.                 </td>
  237.             </tr>
  238.             <xsl:if test=".//s:documentation">
  239.             <tr>
  240.                 <td width="20%" class="headers"  bgcolor="#CCCCCC" align="right" valign="top" wrap="true">
  241.                     Schema Comments:
  242.                 </td>
  243.                 <td class="descriptions" align="left" bgcolor="#EEEEEE" fgcolor="#FFAA00" valign="top">
  244.                     <font color="#990000">
  245.                     <xsl:apply-templates mode="schemacomments" select="./s:annotation"/></font>
  246.                 </td>
  247.             </tr>
  248.              </xsl:if>
  249.             <tr>
  250.                 <td width="20%" class="headers"  bgcolor="#CCCCCC" align="right" valign="top" wrap="true">
  251.                     <div class="headers">Schema has:</div>
  252.                 </td>
  253.                 <td class="values" bgcolor="eeeeee" align="left" valign="top">
  254.                     <xsl:number value="count(s:element) + count(s:complexType)" />
  255.                                     element definitions, 
  256.                                     <xsl:if test="count(s:group)> 0" >
  257.                                         <xsl:number value="count(s:group) "/>
  258.                                         group definitions,
  259.                                     </xsl:if>
  260.                                     
  261.                                                                                         <xsl:number value="count(s:attribute) + count(s:attributeGroup)"/>
  262.                                     global attribute definitions,
  263.                                     <xsl:number value="count(s:element/s:attribute)  + count(.//s:complexType/s:attribute)"/>
  264.                                     element attribute definitions,
  265.                                     <xsl:number value=" count(.//s:simpleType/@name)"/>
  266.                                     datatype definitions.
  267.                 </td>
  268.             </tr>
  269.  
  270.             <tr>
  271.                 <td width="20%" class="headers"  bgcolor="#CCCCCC" align="right" valign="top" wrap="true">
  272.                     Posible root elements:
  273.                 </td>
  274.                 <td class="values" bgcolor="eeeeee" align="left" valign="top">
  275.                                 <xsl:for-each select="s:element">
  276.                                     <xsl:sort select="@name"/>
  277.                                     <xsl:choose>
  278.                                         <!-- Look for root elements  -->
  279.                                         <xsl:when test="/*[not(.//s:element[@ref=current()/@name])] and /*[not(.//s:element[@type=current()/@name])]">
  280.                                             <B>
  281.                                                 <
  282.                                                 <A>
  283.                                                     <xsl:attribute name="href">#ELEMENT_<xsl:value-of select="@name"/>
  284.                                                     </xsl:attribute>
  285.                                                     <xsl:value-of select="@name"/>
  286.                                                 </A>
  287.                                                 >
  288.                                             </B>
  289.                                             <xsl:choose>
  290.                                                 <xsl:when test="@type | .//s:complexType |  .//s:element"> †</xsl:when>
  291.                                                 <xsl:otherwise>(orphan?)</xsl:otherwise>
  292.                                             </xsl:choose>
  293.                                     <xsl:if test="(position()+1) mod 3 = 1">
  294.                                     <br/>
  295.                                     </xsl:if>
  296.                                             
  297.                                         </xsl:when>
  298.                                     </xsl:choose>
  299.                                 </xsl:for-each>
  300.                 </td>
  301.             </tr>
  302.         </table>
  303.         <p/>
  304.         <p/>        <p/>
  305.         <table width="90%" border="0" cellspacing="0" cellpadding="2" align="center">
  306.         <tr  >
  307.                     <td bgcolor="#003366"  >
  308.                         <font face="Arial,Helvetica" size="5" color="#FFFFFF">
  309.                             Element list
  310.                         </font>
  311.                 </td>
  312.             </tr>            
  313.         </table>
  314.         <p/>
  315.         <xsl:apply-templates mode="elementDescriptions" select="./s:element | ./s:complexType"/>
  316.  
  317.         <xsl:if test="./s:group">
  318.         <table width="90%" border="0" cellspacing="0" cellpadding="2" align="center">
  319.             <tr>
  320.             <td bgcolor="#003366"  >
  321.                 <font face="Arial,Helvetica" size="5" color="#FFFFFF">
  322.                             Element groups
  323.                 </font>
  324.             </td>
  325.             </tr>            
  326.         </table>
  327.         <p/>
  328.         <xsl:apply-templates mode="elementGroupsMode" select="./s:group"/>
  329.         </xsl:if>
  330.         <P/>
  331.         <P/>
  332.         <xsl:if test="./s:attributeGroup">
  333.         <table width="90%" border="0" cellspacing="0" cellpadding="2" align="center">
  334.             <tr>
  335.             <td bgcolor="#8888ff"  >
  336.                 <font face="Arial,Helvetica" size="5" color="#FFFFFF">
  337.                             Global Attributes
  338.                 </font>
  339.             </td>
  340.             </tr>            
  341.         </table>
  342.         
  343.         <xsl:apply-templates mode="attributeGroupsMode" select="./s:attributeGroup"/>
  344.         </xsl:if>
  345.  
  346.  
  347.         <P/>
  348.         <P/>
  349.         <p/>
  350.         <table width="90%" border="0" cellspacing="0" cellpadding="2" align="center">
  351.         <tr  >
  352.                     <td bgcolor="#003366"  >
  353.                         <font face="Arial,Helvetica" size="5" color="#FFFFFF">
  354.                             DataType definitions
  355.                         </font>
  356.                 </td>
  357.             </tr>            
  358.         </table>
  359.         <p/>
  360.         <xsl:apply-templates mode="datatypeDefs" select=".//s:simpleType"/>
  361.         <p/>        <p/>        
  362.         <P/>
  363.         <table width="90%" border="0" cellspacing="0" cellpadding="2" align="center">
  364.             <tr>
  365.             <td bgcolor="#bbbbbb"  >
  366.                 <font face="Arial,Helvetica" size="5" color="#FFFFFF">
  367.                         <xsl:if test="@targetNamespace">
  368.                                 <xsl:value-of select="@targetNamespace"/>
  369.                         </xsl:if>
  370.                 </font>
  371.             Original Schema Source
  372.  
  373.             </td>
  374.             </tr>            
  375.         </table>        
  376.     </xsl:template>
  377. <!--END s:schema***********************************************************-->
  378. <!--END s:schema***********************************************************-->
  379.     <xsl:template mode="refSubElement" match="s:element">
  380.         <xsl:if test="@ref">
  381.         <A><xsl:attribute name="HREF">#ELEMENT_<xsl:value-of select="@ref"/></xsl:attribute><xsl:value-of select="@ref"/>
  382.         </A>  
  383.           <xsl:if test="position()!=last()">, </xsl:if>
  384.  
  385.         </xsl:if>
  386.             
  387.     </xsl:template>
  388.     <xsl:template mode="refSubElement" match="s:group">
  389.         <xsl:if test="@ref">
  390.         <A><xsl:attribute name="HREF">#GROUP_<xsl:value-of select="@ref"/></xsl:attribute><xsl:value-of select="@ref"/>
  391.         </A>  
  392.           <xsl:if test="position()!=last()">, </xsl:if>
  393.  
  394.         </xsl:if>
  395.             
  396.     </xsl:template>
  397.     <xsl:template mode="defSubElement" match="s:element | s:complexType">
  398.  
  399.         <xsl:if test="@type">
  400.             <xsl:value-of select="@name"/>(
  401.         <A><xsl:attribute name="HREF">http://www.w3.org/TR/xmlschema-2/#<xsl:value-of select="@type"/></xsl:attribute><xsl:value-of select="@type"/>
  402.         </A>) 
  403.           <xsl:if test="position()!=last()">, </xsl:if>
  404.  
  405.         </xsl:if>
  406.         
  407.     </xsl:template>
  408.     <xsl:template mode="subElement" match="s:element | s:complexType">
  409.  
  410.  
  411.             <xsl:value-of select="@name"/>
  412.             <xsl:if test="@type">(
  413.         <A><xsl:attribute name="HREF">#ELEMENT_<xsl:value-of select="@type"/></xsl:attribute><xsl:value-of select="@type"/>
  414.         </A>) </xsl:if>
  415.           <xsl:if test="position()!=last()">, </xsl:if>
  416.  
  417.         
  418.         
  419.     </xsl:template>
  420.  
  421.     <xsl:template mode="elementName" match="s:complexType">
  422.         Complex Type  
  423.     </xsl:template>
  424.     <xsl:template mode="elementName" match="s:element">
  425.         Element 
  426.     </xsl:template>
  427.     <xsl:template mode="elementDescriptions" match="s:complexType | s:element" >
  428.         <center>
  429.             <table width="90%" cellspacing="0" cellpadding="2" border="0" >
  430.                 <tr bgcolor="#003366">
  431.                     <td>
  432.                         <font face="Arial,Helvetica" color="#FFFFFF">
  433.                             <xsl:apply-templates mode="elementName" select="."/>
  434.                             <A>
  435.                                 <xsl:attribute name="name">ELEMENT_<xsl:value-of select="@name"/>
  436.                                 </xsl:attribute>
  437.                                 <b>
  438.                                     <xsl:value-of select="@name"/>
  439.                                 </b>
  440.                             </A>
  441.                         </font>
  442.                     </td>
  443.                 </tr>
  444.             </table>
  445.         </center>
  446.         <table width="90%" cellspacing="0" cellpadding="0" border="0" bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF" align="center">
  447.             <tr>
  448.                 <td width="3%" bgcolor="#4444ff" align="left" valign="middle"> †</td>
  449.                 <td width="97%" align="left" valign="top">
  450.                     <table width="100%" cellspacing="3" cellpadding="1" border="0" bordercolor="#FFFFFF" align="left">
  451.                         <tr>
  452.                                 <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  453.                                     diagram
  454.                                 </td>
  455.                             <td align="left" valign="top" bgcolor="#eeeeeeee" >
  456.                                 <img>
  457.                                     <xsl:attribute name="SRC">sdimages/<xsl:value-of select="@name"/>.gif
  458.                                     </xsl:attribute>
  459.                                 </img>
  460.                             </td>
  461.                         </tr>
  462.                         <xsl:if test=".//s:documentation">
  463.                             <tr>
  464.                                 <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  465.                                     description
  466.                                 </td>
  467.                                 <td width="85%" class="descriptions"  align="left" bgcolor="#eeeeeeee" wrap="true">
  468.                                     <font color="#990000">
  469.                                     <xsl:apply-templates mode="schemacomments" select=".//s:annotation"/></font>
  470.                                 </td>
  471.                             </tr>
  472.                         </xsl:if>
  473.                         <tr>
  474.                             <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  475.                                 attributes
  476.                             </td>
  477.                             <td width="85%" class="values" bgcolor="#eeeeeeee">
  478.                                 <xsl:apply-templates mode="glanceAttrib" select=".//s:attribute | .//s:attributeGroup"/>
  479.                             </td>
  480.                         </tr>
  481.                          <tr>
  482.                             <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  483.                                 uses
  484.                             </td>
  485.                             <td width="85%" class="values" bgcolor="#eeeeeeee">
  486.                             <xsl:choose>
  487.                             <xsl:when test=".//s:element/@ref | .//s:group">
  488.                                 <xsl:apply-templates mode="refSubElement" select=".//s:element | .//s:group"/>
  489.                             </xsl:when>
  490.                             <xsl:otherwise>
  491.                                 Does not reference other elements.
  492.                             </xsl:otherwise>
  493.                             </xsl:choose>
  494.                             </td>
  495.                         </tr>
  496.                          <tr>
  497.                             <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  498.                                 defines localy
  499.                             </td>
  500.                             <td width="85%" class="values" bgcolor="#eeeeeeee">
  501.                             <xsl:choose>
  502.                             <xsl:when test=".//s:element/@type">
  503.                                 <xsl:apply-templates mode="defSubElement" select=".//s:element"/>
  504.                             </xsl:when>
  505.                             <xsl:otherwise>
  506.                                 Does not define any local elements
  507.                             </xsl:otherwise>
  508.                             </xsl:choose>
  509.                             </td>
  510.                         </tr>
  511.                     </table>
  512.                 </td>
  513.             </tr>
  514.         </table>
  515.         <table width="90%" cellspacing="0" cellpadding="0" border="0" bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF" align="center">
  516.             <tr>
  517.                 <td width="3%" bgcolor="#6666ff" align="center" valign="top"> †</td>
  518.                 <td width="97%" align="center" valign="left">
  519.                     <table width="100%" cellspacing="3" cellpadding="1" border="0" align="left" valign="top" bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF">
  520.                         <!-- Find the parents -->
  521.                         <TR>
  522.                             <TD width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">used by</TD>
  523.                             <TD class="values" bgcolor="#eeeeee" align="left" valign="top">
  524.                                 <xsl:choose>
  525.                                             
  526.                                     <xsl:when test="../s:element[.//s:element[@ref = current()/@name ]]  | ../s:element[.//s:element[@type = current()/@name ]]">
  527.                                         <xsl:for-each select="../s:element[.//s:element[@ref = current()/@name ]]  | ../s:element[.//s:element[@type = current()/@name ]]">
  528.                                             <xsl:sort select="@name"/>
  529.                                             <A class="element-link">
  530.                                                 <xsl:attribute name="HREF">
  531.                                                     #ELEMENT_
  532.                                                     <xsl:value-of select="@name"/>
  533.                                                 </xsl:attribute>
  534.                                                 <xsl:value-of select="@name"/>
  535.                                             </A>
  536.                                              †
  537.                                             <xsl:if test="current()[position()!=last()]">,</xsl:if>
  538.                                         </xsl:for-each>
  539.                                     </xsl:when>
  540.                                     <xsl:otherwise>
  541.                                         <xsl:choose>
  542.                                             <xsl:when test=".//s:element">
  543.                                                 <SPAN class="note">Not used by other elements. Possible root element.</SPAN>
  544.                                             </xsl:when>
  545.                                             <xsl:otherwise>
  546.                                                 <SPAN class="note">Not used by other elements. Probably an orphan.</SPAN>
  547.                                             </xsl:otherwise>
  548.                                         </xsl:choose>
  549.                                     </xsl:otherwise>
  550.                                 </xsl:choose>
  551.                             </TD>
  552.                         </TR>
  553.                         <tr>
  554.                             <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  555.                             content
  556.                             </td>
  557.                             <td width="85%" class="values" bgcolor="#eeeeeeee">
  558.                                    <xsl:apply-templates mode="contentModel" select="."/>
  559.                             </td>
  560.                         </tr>
  561. <!--
  562.                         <tr>
  563.                             <td width="15%" bgcolor="#CCCCCC" align="right" valign="top">
  564.                                 <span class="names">order</span>
  565.                             </td>
  566.                             <td width="85%"  class="values" bgcolor="#eeeeee" >
  567.                                 <xsl:if test=".//s:sequence">sequence</xsl:if>
  568.                                 <xsl:if test=".//s:group">
  569.                                  <xsl:apply-templates mode="order" select=".//s:group"/>    
  570.                                 </xsl:if>
  571.                             </td>
  572.                         </tr>
  573. -->  
  574.                   <xsl:if test="@type">
  575.                         <tr>
  576.                             <td width="15%" bgcolor="#CCCCCC" align="right" valign="top">
  577.                                 <span class="names">type</span>
  578.                             </td>
  579.                             <td width="85%"  class="values" bgcolor="#eeeeee" >
  580.                                                 <xsl:value-of select="@type" />            </td>
  581.                         </tr>
  582.                      </xsl:if>
  583.                     </table>
  584.                 </td>
  585.             </tr>
  586.         </table>
  587.         <xsl:if test=".//s:attribute">
  588.             <table width="90%" cellspacing="0" cellpadding="0" border="0"  bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF" align="center">
  589.                 <tr>
  590.                     <td width="3%" bgcolor="#8888ff" align="left" valign="top"> †</td>
  591.                     <td width="97%" align="left" valign="top">
  592.                         <table width="100%" cellspacing="3" cellpadding="1" border="0"  align="left" valign="top" bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF">
  593.                             <tr>
  594.                                 <th width="15%" bgcolor="#CCCCCC" align="right" valign="top">
  595.                                     <span class="headers">Attribute</span>
  596.                                 </th>
  597.  
  598.                                 <th width="20%" bgcolor="#CCCCCC" align="left" >
  599.                                     <span class="headers">Datatype</span>
  600.                                 </th>
  601.                                 <th width="20%" bgcolor="#CCCCCC" align="left" >
  602.                                     <span class="headers">Use</span>
  603.                                 </th>
  604.                                 <th width="25%" bgcolor="#CCCCCC" align="left"  >
  605.                                     <span class="headers">Values</span>
  606.                                 </th>
  607.                                 <th width="20%" bgcolor="#CCCCCC" align="left" >
  608.                                     <span class="headers">Default</span>
  609.                                 </th>
  610.                             </tr>
  611.                             <xsl:apply-templates mode="detailAttrib" select=".//s:attribute"/>
  612.                         </table>
  613.                         </td>
  614.                     </tr>
  615.                 </table>
  616.         </xsl:if>
  617.         <table width="90%" cellspacing="0" cellpadding="0" border="0"  bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF" align="center">
  618.                 <tr>
  619.                     <td width="3%" bgcolor="#bbbbbb" align="left" valign="top"> †</td>
  620.                     <td width="97%" align="left" valign="top">
  621.                         <table width="100%" cellspacing="3" cellpadding="1" border="0"  align="left" valign="top" bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF">
  622.  
  623.                         <tr>
  624.                             <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  625.                                 source
  626.                             </td>
  627.                             <td width="85%" class="source" bgcolor="#eeeeeeee" align="left" valign="top">
  628.                                     <xsl:apply-templates mode="copy" select="current()"/>
  629.                             </td>
  630.                         </tr>
  631.                     </table>
  632.                     </td>
  633.                 </tr>
  634.             </table>
  635.         <p/>
  636.     </xsl:template>
  637.  
  638.     <xsl:template mode="elementGroupsMode" match="s:group" >
  639.         <center>
  640.             <table width="90%" cellspacing="0" cellpadding="2" border="0" >
  641.                 <tr bgcolor="#4444FF">
  642.                     <td>
  643.                         <font face="Arial,Helvetica" color="#FFFFFF">
  644.                             Element group 
  645.                             <A>
  646.                                 <xsl:attribute name="name">GROUP_<xsl:value-of select="@name"/>
  647.                                 </xsl:attribute>
  648.                                 <b>
  649.                                     <xsl:value-of select="@name"/>
  650.                                 </b>
  651.                             </A>
  652.                         </font>
  653.                     </td>
  654.                 </tr>
  655.             </table>
  656.         </center>
  657.         <table width="90%" cellspacing="0" cellpadding="0" border="0" bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF" align="center">
  658.             <tr>
  659.                 <td width="3%" bgcolor="#4444FF" align="left" valign="middle"> †</td>
  660.                 <td width="97%" align="left" valign="top">
  661.                     <table width="100%" cellspacing="3" cellpadding="1" border="0" bordercolor="#FFFFFF" align="left">
  662.  
  663.                         <xsl:if test=".//s:documentation">
  664.                             <tr>
  665.                                 <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  666.                                     description
  667.                                 </td>
  668.                                 <td width="85%" class="descriptions"  align="left" bgcolor="#eeeeeeee" wrap="true">
  669.                                     <font color="#990000">
  670.                                     <xsl:apply-templates mode="schemacomments" select=".//s:annotation"/></font>
  671.                                 </td>
  672.                             </tr>
  673.                         </xsl:if>
  674.                         <tr>
  675.                             <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  676.                                 contains 
  677.                             </td>
  678.                             <td width="85%" class="values" bgcolor="#eeeeeeee">
  679.                             <xsl:choose>
  680.                             <xsl:when test=".//s:element">
  681.                                 <xsl:apply-templates mode="subElement" select=".//s:element"/>
  682.                             </xsl:when>
  683.                             <xsl:otherwise>
  684.                                 Does not reference other elements.
  685.                             </xsl:otherwise>
  686.                             </xsl:choose>
  687.                             </td>
  688.                         </tr>
  689.                             <tr>
  690.                                 <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  691.                                     content model
  692.                                 </td>
  693.                                 <td width="85%" class="descriptions"  align="left" bgcolor="#eeeeeeee" wrap="true">
  694.                                     <font color="#990000">
  695.                                     <xsl:apply-templates mode="contentModel" select="."/></font>
  696.                                 </td>
  697.                             </tr>
  698.                         <TR>
  699.                             <TD width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">used by</TD>
  700.                             <TD class="values" bgcolor="#eeeeee" align="left" valign="top">
  701.                                 <xsl:choose>
  702.                                             
  703.                                     <xsl:when test="../s:complexType[.//s:group[@ref = current()/@name ]]  | ../s:complexType[.//s:group[@type = current()/@name ]]">
  704.                                         <xsl:for-each select="../s:complexType[.//s:group[@ref = current()/@name ]]  | ../s:complexType[.//s:group[@type = current()/@name ]]">
  705.                                             <xsl:sort select="@name"/>
  706.                                             <A class="element-link">
  707.                                                 <xsl:attribute name="HREF">
  708.                                                     #ELEMENT_
  709.                                                     <xsl:value-of select="@name"/>
  710.                                                 </xsl:attribute>
  711.                                                 <xsl:value-of select="@name"/>
  712.                                             </A>
  713.                                              †
  714.                                             <xsl:if test="current()[position()!=last()]">,</xsl:if>
  715.                                         </xsl:for-each>
  716.                                     </xsl:when>
  717.                                     <xsl:otherwise>
  718.                                         <xsl:choose>
  719.                                             <xsl:when test=".//s:element">
  720.                                                 <SPAN class="note">Not used.</SPAN>
  721.                                             </xsl:when>
  722.                                             <xsl:otherwise>
  723.                                                 <SPAN class="note">Not used.</SPAN>
  724.                                             </xsl:otherwise>
  725.                                         </xsl:choose>
  726.                                     </xsl:otherwise>
  727.                                 </xsl:choose>
  728.                             </TD>
  729.                         </TR>
  730.                             
  731.  
  732.  
  733.                     </table>
  734.                     </td>
  735.                 </tr>
  736.             </table>
  737.             <table width="90%" cellspacing="0" cellpadding="0" border="0"  bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF" align="center">
  738.                 <tr>
  739.                     <td width="3%" bgcolor="#bbbbbb" align="left" valign="top"> †</td>
  740.                     <td width="97%" align="left" valign="top">
  741.                         <table width="100%" cellspacing="3" cellpadding="1" border="0"  align="left" valign="top" bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF">
  742.  
  743.                         <tr>
  744.                             <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  745.                                 source
  746.                             </td>
  747.                             <td width="85%" class="source" bgcolor="#eeeeeeee" align="left" valign="top">
  748.                                     <xsl:apply-templates mode="copy" select="current()"/>
  749.                             </td>
  750.                         </tr>
  751.                     </table>
  752.                     </td>
  753.                 </tr>
  754.             </table>
  755.  
  756.         <p/>
  757.     </xsl:template>
  758.     <xsl:template mode="glanceAttrib" match="s:attribute ">
  759.         <xsl:value-of select="@name"/>  
  760.     </xsl:template>
  761.     <xsl:template mode="glanceAttrib" match="s:attributeGroup">
  762.                                             <A class="element-link">
  763.                                                 <xsl:attribute name="HREF">
  764.                                                     #ATTRIBUTEGROUP_
  765.                                                     <xsl:value-of select="@ref"/>
  766.                                                 </xsl:attribute>
  767.                                             <xsl:value-of select="@ref"/>  
  768.                                             </A>
  769.     </xsl:template>
  770.  
  771.     <xsl:template mode="detailAttrib" match="s:attribute">
  772.         <tr>
  773.             <td width="15%" bgcolor="#CCCCCC" align="right" valign="top">
  774.                 <span class="headers">
  775.                     <b>
  776.                         <xsl:value-of select="@name"/>
  777.                     </b>
  778.                 </span>
  779.             </td>            
  780.  
  781.             <td width="20%" class="values" bgcolor="#eeeeee" align="left" valign="top">
  782.                <xsl:if test="@type">
  783.                 <A ><xsl:attribute name="href">http://www.w3.org/TR/xmlschema-2/#<xsl:value-of select="@type"/></xsl:attribute>
  784.                         <xsl:value-of select="@type"/></A>
  785.                 </xsl:if>
  786.                 <xsl:if test="./s:simpleType">
  787.                 <A ><xsl:attribute name="href">http://www.w3.org/TR/xmlschema-2/#<xsl:value-of select="./s:simpleType/@base"/></xsl:attribute>
  788.                         <xsl:value-of select="./s:simpleType/@base"/></A>
  789.                      
  790.                 </xsl:if>
  791.             </td>
  792.             <td width="20%" class="values" bgcolor="#eeeeee" align="left" valign="top">
  793.       <xsl:choose>
  794.         <xsl:when test="@use">
  795.           <xsl:value-of select="@use"/>
  796.         </xsl:when>
  797.         <xsl:otherwise>
  798.           optional (default)
  799.         </xsl:otherwise>
  800.       </xsl:choose>
  801.             </td>
  802.             <td width="25%" class="values" bgcolor="#eeeeee" align="left" valign="top">
  803.                <xsl:for-each select=".//s:enumeration">
  804.                     <xsl:value-of select="@value" /> 
  805.                     <xsl:if test="position()!=last()"> |  </xsl:if>  
  806.                 </xsl:for-each>
  807.             </td>
  808.         
  809.             <td width="20%" class="values" bgcolor="#eeeeee" align="left" valign="top">
  810.  
  811.                     <xsl:value-of select="@value"/>
  812.             </td>
  813.  
  814.  
  815.         </tr>
  816.     </xsl:template>
  817.     
  818.     <xsl:template mode="attributeGroupsMode" match="s:attributeGroup">
  819.     <p/>
  820.         <center>
  821.             <table width="90%" cellspacing="0" cellpadding="2" border="0" >
  822.                 <tr bgcolor="#8888ff">
  823.                     <td>
  824.                         <font face="Arial,Helvetica" color="#FFFFFF">
  825.                             Attribute Group: 
  826.                             <A>
  827.                                 <xsl:attribute name="name">ATTRIBUTEGROUP_<xsl:value-of select="@name"/>
  828.                                 </xsl:attribute>
  829.                                 <b>
  830.                                     <xsl:value-of select="@name"/>
  831.                                 </b>
  832.                             </A>
  833.                         </font>
  834.                     </td>
  835.                 </tr>
  836.             </table>
  837.         </center>
  838.  
  839.  
  840.         <table width="90%" cellspacing="0" cellpadding="0" border="0"  bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF" align="center">
  841.                 <tr>
  842.                     <td width="3%" bgcolor="#8888ff" align="left" valign="top"> †</td>
  843.                     <td width="97%" align="left" valign="top">
  844.                         <table width="100%" cellspacing="3" cellpadding="1" border="0"  align="left" valign="top" bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF">
  845.                             <tr>
  846.                                 <th width="15%" bgcolor="#CCCCCC" align="right" valign="top">
  847.                                     <span class="headers">Attribute</span>
  848.                                 </th>
  849.  
  850.                                 <th width="20%" bgcolor="#CCCCCC" align="left" >
  851.                                     <span class="headers">Datatype</span>
  852.                                 </th>
  853.                                 <th width="20%" bgcolor="#CCCCCC" align="left" >
  854.                                     <span class="headers">Use</span>
  855.                                 </th>
  856.                                 <th width="25%" bgcolor="#CCCCCC" align="left"  >
  857.                                     <span class="headers">Values</span>
  858.                                 </th>
  859.                                 <th width="20%" bgcolor="#CCCCCC" align="left" >
  860.                                     <span class="headers">Default</span>
  861.                                 </th>
  862.                             </tr>
  863.                             <xsl:apply-templates mode="detailAttrib" select=".//s:attribute"/>
  864.                         </table>
  865.                     </td>
  866.                 </tr>
  867.             </table>
  868.     </xsl:template>
  869.     <!-- END detailattribute TYPE -->    
  870.     
  871.     <xsl:template mode="datatypeDefs" match="s:simpleType">
  872.        <xsl:if test="@name">    
  873.        <p/>
  874.         <center>
  875.             <table width="90%" cellspacing="0" cellpadding="2" border="0" >
  876.                 <tr bgcolor="#AAAAff">
  877.                     <td>
  878.                         <font face="Arial,Helvetica" color="#FFFFFF">
  879.                             Datatype
  880.                             <A>
  881.                                 <xsl:attribute name="name">DATATYPE_<xsl:value-of select="@name"/>
  882.                                 </xsl:attribute>
  883.                                 <b>
  884.                                     <xsl:value-of select="@name"/>
  885.                                 </b>
  886.                             </A>
  887.                         </font>
  888.                         <xsl:if test="@abstract='true'">
  889.                         <font face="Arial,Helvetica" color="#FFFFFF">
  890.                             <i> abstract  </i>
  891.                          </font>   
  892.                         </xsl:if>
  893.                     </td>
  894.                     <xsl:if test="@id">
  895.                       <td align="left">
  896.                         <font face="Arial,Helvetica" color="#FFFFFF">
  897.                             id: <xsl:value-of select="@id"/>
  898.                          </font> 
  899.                       </td>       
  900.                         </xsl:if>
  901.                       
  902.                 </tr>
  903.             </table>
  904.         <table width="90%" cellspacing="0" cellpadding="0" border="0" bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF" align="center">
  905.             <tr>
  906.                 <td width="3%" bgcolor="#AAAAFF" align="left" valign="middle"> †</td>
  907.                 <td width="97%" align="left" valign="top">
  908.             
  909.                        <table width="100%" cellspacing="3" cellpadding="1" border="0" bordercolor="#FFFFFF" align="left">
  910.  
  911.                         <xsl:if test=".//s:documentation">
  912.                             <tr>
  913.                                 <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  914.                                     description
  915.                                 </td>
  916.                                 <td width="85%" class="descriptions"  align="left" bgcolor="#eeeeeeee" wrap="true">
  917.                                     <font color="#990000">
  918.                                     <xsl:apply-templates mode="schemacomments" select=".//s:annotation"/></font>
  919.                                 </td>
  920.                             </tr>
  921.                         </xsl:if>
  922.                         <xsl:if test="@base">
  923.                             <tr>
  924.                                 <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  925.                                     dt base
  926.                                 </td>
  927.                                 <td width="85%" class="values"  align="left" bgcolor="#eeeeeeee" wrap="true">
  928.                                     <xsl:value-of select="@base" />
  929.                                 </td>
  930.                             </tr>
  931.                         </xsl:if>
  932.  
  933.                             <tr>
  934.                                 <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  935.                                     derivedBy
  936.                                 </td>
  937.                                 <td width="85%" class="values"  align="left" bgcolor="#eeeeeeee" wrap="true">
  938.                                 <xsl:choose>
  939.                                   <xsl:when test="@derivedBy">
  940.                                      <xsl:value-of select="@derivedBy" />
  941.                                   </xsl:when>
  942.                                   <xsl:otherwise>
  943.                                      <i>restriction (default)</i>
  944.                                   </xsl:otherwise>
  945.                                 </xsl:choose>
  946.                                     
  947.                                 </td>
  948.                             </tr>
  949.  
  950.                  
  951.                         <xsl:if test="./s:precision">
  952.                             <tr>
  953.                                 <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  954.                                     precision
  955.                                 </td>
  956.                                 <td width="85%" class="values"  align="left" bgcolor="#eeeeeeee" wrap="true">
  957.                                     <xsl:value-of select="./s:precision/@value" />
  958.                                 </td>
  959.                             </tr>
  960.                         </xsl:if>
  961.  
  962.                         
  963.                         <xsl:if test="./s:scale">
  964.                             <tr>
  965.                                 <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  966.                                     scale
  967.                                 </td>
  968.                                 <td width="85%" class="values"  align="left" bgcolor="#eeeeeeee" wrap="true">
  969.                                     <xsl:value-of select="./s:scale/@value" />
  970.                                 </td>
  971.                             </tr>
  972.                         </xsl:if>
  973.                         <xsl:if test="./s:encoding">
  974.                             <tr>
  975.                                 <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  976.                                     encoding
  977.                                 </td>
  978.                                 <td width="85%" class="values"  align="left" bgcolor="#eeeeeeee" wrap="true">
  979.                                     <xsl:value-of select="./s:encoding/@value" />
  980.                                 </td>
  981.                             </tr>
  982.                         </xsl:if>
  983.                         <xsl:if test="./s:length">
  984.                             <tr>
  985.                                 <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  986.                                     length
  987.                                 </td>
  988.                                 <td width="85%" class="values"  align="left" bgcolor="#eeeeeeee" wrap="true">
  989.                                     <xsl:value-of select="./s:length/@value" />
  990.                                 </td>
  991.                             </tr>
  992.                         </xsl:if>
  993.                         <xsl:if test="./s:duration">
  994.                             <tr>
  995.                                 <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  996.                                     duration 
  997.                                 </td>
  998.                                 <td width="85%" class="values"  align="left" bgcolor="#eeeeeeee" wrap="true">
  999.                                     <xsl:value-of select="./s:duration/@value" />
  1000.                                 </td>
  1001.                             </tr>
  1002.                         </xsl:if>
  1003.                         <xsl:if test="./s:period">
  1004.                             <tr>
  1005.                                 <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  1006.                                     period 
  1007.                                 </td>
  1008.                                 <td width="85%" class="values"  align="left" bgcolor="#eeeeeeee" wrap="true">
  1009.                                     <xsl:value-of select="./s:period/@value" />
  1010.                                 </td>
  1011.                             </tr>
  1012.                         </xsl:if>
  1013.                         <xsl:if test="./s:pattern">
  1014.                             <tr>
  1015.                                 <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  1016.                                     pattern
  1017.                                 </td>
  1018.                                 <td width="85%" class="values"  align="left" bgcolor="#eeeeeeee" wrap="true">
  1019.                                     <xsl:value-of select="./s:pattern/@value" />
  1020.                                 </td>
  1021.                             </tr>
  1022.                         </xsl:if>
  1023.                         <xsl:if test="./s:enumeration">
  1024.                             <tr>
  1025.                                 <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  1026.                                     enumeration
  1027.                                 </td>
  1028.                                 <td width="85%" class="values"  align="left" bgcolor="#eeeeeeee" wrap="true">
  1029.                                    <xsl:for-each select="./s:enumeration" >
  1030.                                     <xsl:value-of select="@value" /> 
  1031.                                      <xsl:if test="position()!=last()"> |  </xsl:if>  
  1032.                                    </xsl:for-each> 
  1033.                                 </td>
  1034.                             </tr>
  1035.                         </xsl:if>
  1036.                         <xsl:if test="./s:minExclusive | ./s:minInclusive | ./s:maxExclusive | ./s:maxInclusive ">
  1037.                             <tr>
  1038.                                 <td width="15%" class="names" bgcolor="#CCCCCC" align="right" valign="top">
  1039.                                     range
  1040.                                 </td>
  1041.                                 <td width="85%" class="values"  align="left" bgcolor="#eeeeeeee" wrap="true">
  1042.                                     
  1043.                                 </td>
  1044.                             </tr>
  1045.                         </xsl:if>
  1046.  
  1047.                         
  1048.                     </table>
  1049.                 </td>
  1050.              </tr>
  1051.         </table>
  1052.  
  1053.  
  1054.         </center>
  1055.        </xsl:if>    
  1056.     </xsl:template>
  1057.  
  1058.     <xsl:template mode="contentModel" match="s:complexType | s:element">
  1059.         <xsl:choose> 
  1060.         <xsl:when test="@content">
  1061.              <xsl:value-of select="@content"/>
  1062.         </xsl:when> 
  1063.         <xsl:otherwise>
  1064.             sequence <i> (default) </i>
  1065.         </xsl:otherwise>
  1066.         </xsl:choose>
  1067.  
  1068.     </xsl:template>
  1069.     
  1070.     <xsl:template mode="contentModel" match="s:group">
  1071.         <xsl:choose> 
  1072.         <xsl:when test="/s:sequence">
  1073.              sequence
  1074.         </xsl:when> 
  1075.         <xsl:when test="/s:choice">
  1076.              choice
  1077.         </xsl:when> 
  1078.         <xsl:when test="/s:all">
  1079.              all
  1080.         </xsl:when> 
  1081.  
  1082.         <xsl:otherwise>
  1083.             sequence <i> (default) </i>
  1084.         </xsl:otherwise>
  1085.         </xsl:choose>
  1086.  
  1087.     </xsl:template>
  1088.     <xsl:template mode="contentModel" match="s:type">
  1089.         <xsl:value-of select="@content"/>
  1090.     </xsl:template>
  1091.         
  1092.     <xsl:template mode="order" match="s:group">
  1093.         <xsl:value-of select="@order"/>
  1094.     </xsl:template>
  1095.     
  1096.     <xsl:template mode="order" match="s:element">
  1097.         <xsl:value-of select="@order"/>    
  1098.     </xsl:template>
  1099.  
  1100.  
  1101.  
  1102.     <xsl:template match="s:appInfo" mode="schemacomments">
  1103.          
  1104.         <xsl:choose> 
  1105.         <xsl:when test="not(@usage='USAGE')">
  1106.                  <xsl:value-of select="text()"/>
  1107.         </xsl:when> 
  1108.         </xsl:choose>   
  1109.             <!--<xsl:apply-templates mode="comments" />-->
  1110.     </xsl:template>
  1111.     
  1112.     <xsl:template match="s:description" mode="usagecomments">
  1113.         <xsl:choose> 
  1114.         <xsl:when test="@usage='USAGE'">
  1115.              <xsl:value-of select="text()"/>
  1116.         </xsl:when> 
  1117.         </xsl:choose>   
  1118.     </xsl:template>    
  1119.     
  1120.     <xsl:template match="s:description | s:appInfo" mode="schemacomments">
  1121.          <xsl:value-of select="text()"/>
  1122.          <BR/>
  1123.     </xsl:template>
  1124.  
  1125. <!--
  1126. <xsl:template mode="copy" match="*|@*|comment()|processing-instruction()|text()">
  1127.   <xsl:copy>
  1128.     <xsl:apply-templates mode="copy" 
  1129.      select="*|@*|comment()|processing-instruction()|text()"/>
  1130.   </xsl:copy>
  1131. </xsl:template>
  1132. -->
  1133.     <!-- ***********************SOURCE part...copied from lotus*****************-->
  1134.  
  1135. <!-- Templates for each node type follows.  The output of each template has a similar structure
  1136.   to enable script to walk the result tree easily for handling user interaction. -->
  1137.   
  1138. <!-- Template for pis not handled elsewhere -->
  1139. <xsl:template mode="copy" match="processing-instruction()">
  1140.   <DIV class="e">
  1141.   <SPAN class="b"> </SPAN>
  1142.   <SPAN class="m"><?</SPAN><SPAN class="pi"><xsl:value-of select="name(.)"/> <xsl:value-of select="."/></SPAN><SPAN class="m">?></SPAN>
  1143.   </DIV>
  1144. </xsl:template>
  1145.  
  1146. <!-- Template for the XML declaration.  Need a separate template because the pseudo-attributes
  1147.     are actually exposed as attributes instead of just element content, as in other pis 
  1148. <xsl:template mode="copy" match="processing-instruction('xml')">
  1149.   <DIV class="e">
  1150.   <SPAN class="b"> </SPAN>
  1151.   <SPAN class="m"><?</SPAN><SPAN class="pi">xml <xsl:for-each select="@*"><xsl:value-of select="name(.)"/>="<xsl:value-of select="."/>" </xsl:for-each></SPAN><SPAN class="m">?></SPAN>
  1152.   </DIV>
  1153. </xsl:template>
  1154. -->
  1155.  
  1156. <!-- Template for attributes not handled elsewhere -->
  1157. <xsl:template mode="copy" match="@*"><SPAN class="t"><xsl:text> </xsl:text><xsl:value-of select="name(.)"/></SPAN><SPAN class="m">="</SPAN><B><xsl:value-of select="."/></B><SPAN class="m">"</SPAN></xsl:template>
  1158.  
  1159. <!-- Template for attributes in the xmlns or xml namespace
  1160. <xsl:template mode="copy"match="@xmlns:*|@xmlns|@xml:*"><SPAN class="ns"> <xsl:value-of select="name(.)"/></SPAN><SPAN class="m">="</SPAN><B class="ns"><xsl:value-of select="."/></B><SPAN class="m">"</SPAN></xsl:template>
  1161. -->
  1162.  
  1163. <!-- Template for text nodes -->
  1164. <xsl:template  mode="copy" match="text()">
  1165.   <xsl:choose><xsl:when test="name(.) = '#cdata-section'"><xsl:call-template name="cdata"/></xsl:when>
  1166.   <xsl:otherwise><DIV class="e">
  1167.   <SPAN class="b"> </SPAN>
  1168.   <SPAN class="tx"><xsl:value-of select="."/></SPAN>
  1169.   </DIV></xsl:otherwise></xsl:choose>
  1170. </xsl:template>
  1171.   
  1172. <!-- Template for comment nodes -->
  1173. <xsl:template mode="copy" match="comment()">
  1174.   <DIV class="k">
  1175.   <SPAN><A class="b" onclick="return false" onfocus="h()" STYLE="visibility:hidden">-</A> <SPAN class="m"><!--</SPAN></SPAN>
  1176.   <SPAN id="clean" class="ci"><PRE><xsl:value-of select="."/></PRE></SPAN>
  1177.   <SPAN class="b"> </SPAN> <SPAN class="m">--></SPAN>
  1178.   <SCRIPT>f(clean);</SCRIPT></DIV>
  1179. </xsl:template>
  1180.  
  1181. <!-- Template for cdata nodes -->
  1182. <xsl:template  name="cdata">
  1183.   <DIV class="k">
  1184.   <SPAN><A class="b" onclick="return false" onfocus="h()" STYLE="visibility:hidden">-</A> <SPAN class="m"><![CDATA[</SPAN></SPAN>
  1185.   <SPAN id="clean" class="di"><PRE><xsl:value-of select="."/></PRE></SPAN>
  1186.   <SPAN class="b"> </SPAN> <SPAN class="m">]]></SPAN>
  1187.   <SCRIPT>f(clean);</SCRIPT></DIV>
  1188. </xsl:template>
  1189.  
  1190. <!-- Template for elements not handled elsewhere (leaf nodes) -->
  1191. <xsl:template mode="copy"  match="*">
  1192.   <DIV class="e"><DIV STYLE="margin-left:1em;text-indent:-2em">
  1193.   <SPAN class="b"> </SPAN>
  1194.   <SPAN class="m"><</SPAN><SPAN class="t"><xsl:value-of select="name(.)"/></SPAN> <xsl:apply-templates  mode="copy" select="@*"/><SPAN class="m"> /></SPAN>
  1195.   </DIV></DIV>
  1196. </xsl:template>
  1197.   
  1198. <!-- Template for elements with comment, pi and/or cdata children
  1199. <xsl:template  mode="copy" match="*[comment() or processing-instruction() or cdata()]">
  1200.   <DIV class="e">
  1201.   <DIV class="c"><A href="#" onclick="return false" onfocus="h()" class="b">-</A> <SPAN class="m"><</SPAN><SPAN><xsl:attribute name="class"><xsl:if test="xsl:*">x</xsl:if>t</xsl:attribute><xsl:value-of select="name(.)"/></SPAN><xsl:apply-templates  mode="copy" select="@*"/> <SPAN class="m">></SPAN></DIV>
  1202.   <DIV><xsl:apply-templates  mode="copy" />
  1203.   <DIV><SPAN class="b"> </SPAN> <SPAN class="m"></</SPAN><SPAN><xsl:attribute name="class"><xsl:if test="xsl:*">x</xsl:if>t</xsl:attribute><xsl:value-of select="name(.)"/></SPAN><SPAN class="m">></SPAN></DIV>
  1204.   </DIV></DIV>
  1205. </xsl:template> -->
  1206.  
  1207. <!-- Template for elements with only text children -->
  1208. <xsl:template mode="copy"  match="*[text() and not(comment() or processing-instruction() or *)]">
  1209.   <DIV class="e"><DIV STYLE="margin-left:1em;text-indent:-2em">
  1210.   <SPAN class="b"> </SPAN> <SPAN class="m"><</SPAN><SPAN class="t"><xsl:value-of select="name(.)"/></SPAN><xsl:apply-templates  mode="copy" select="@*"/>
  1211.   <SPAN class="m">></SPAN><SPAN class="tx"><xsl:value-of select="."/></SPAN><SPAN class="m"></</SPAN><SPAN class="t"><xsl:value-of select="name(.)"/></SPAN><SPAN class="m">></SPAN>
  1212.   </DIV></DIV>
  1213. </xsl:template>
  1214.  
  1215. <!-- Template for elements with element children -->
  1216. <xsl:template mode="copy"  match="*[*]">
  1217.   <DIV class="e">
  1218.   <DIV class="c" STYLE="margin-left:1em;text-indent:-2em"><A href="#" onclick="return false" onfocus="h()" class="b">-</A> <SPAN class="m"><</SPAN><SPAN class="t"><xsl:value-of select="name(.)"/></SPAN><xsl:apply-templates  mode="copy" select="@*"/><SPAN class="m">></SPAN></DIV>
  1219.   <DIV><xsl:apply-templates  mode="copy" />
  1220.   <DIV><SPAN class="b"> </SPAN><SPAN class="m"></</SPAN><SPAN class="t"><xsl:value-of select="name(.)"/></SPAN><SPAN class="m">></SPAN></DIV>
  1221.   </DIV></DIV>
  1222. </xsl:template>
  1223.     function writeEnumeration(_contextNodeList)
  1224.     {
  1225.       var __this = _contextNodeList.item(0);
  1226.       return formatEnum(__this, __this.selectSingleNode("../@default"));
  1227.     }
  1228.     
  1229. </xsl:stylesheet>
  1230.